package com.lz.demo.log.jcl;


import com.lz.demo.log.jcl.subpackage.SubPackageTest;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import java.io.IOException;
import java.io.InputStream;
import java.util.logging.LogManager;

/**
 * jcl 有 6 级日志级别，jul 则有 7 级
 * 对应关系：    jcl     jul     转换日志打印    jul单独日志打印
 *             trace   finest  非常详细            非常详细
 *                     finer                      较详细
 *             debug   fine    详细                详细
 *                     config                     配置
 *             info    info    信息                信息
 *             warn    warning 警告                警告
 *             error   severe  严重                严重
 *             fatal   severe  严重
 */
public class JclJulTest {

    // 使用 static 代码块加载自定义的配置文件 resources/logging.properties（如果注释 static 代码块，是 $JAVA_HOME/jre/lib/logging.properties 生效）
    static {
        // 通过类加载器读取配置文件
        InputStream ins = JclJulTest.class.getClassLoader().getResourceAsStream("logging.properties");
        // 创建 LogManager
        LogManager logManager = LogManager.getLogManager();

        // 通过 LogManager 加载配置文件
        try {
            logManager.readConfiguration(ins);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

    final static Log LOGGER = LogFactory.getLog(JclJulTest.class);

    public static void main( String[] args ) {
        LOGGER.trace("jcl trace message.");
        LOGGER.debug("jcl debug message.");
        LOGGER.info("jcl info message.");
        LOGGER.warn("jcl warn message.");
        LOGGER.error("jcl error message.");
        LOGGER.fatal("jcl fatal message.");

        SubPackageTest.test();
    }
}
